﻿using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using TabbedTemplate.Models;

namespace TabbedTemplate.Services
{
    public interface ICityLocationsService
    {
        /// <summary>
        /// 是否已经初始化。判断版本
        /// </summary>
        bool CityListInitilized();

        /// <summary>
        /// 初始化，copy新版本数据库
        /// </summary>
        Task InitializeCityListAsync();

        /// <summary>
        /// 获取所有城市列表
        /// </summary>
        /// <returns></returns>
        Task<IList<City>> GetCityListAsync(int skip, int take);

        Task<IList<City>> SearchCityAsync(string param);

        Task CloseAsync();
    }

    public static class CityListCacheConstants
    {
        /**
         * nameof 关键字，把类型变成字符串
         * 如果后面把类名改变了，也能改变VersionKey的名称，编译时进行，不在运行时进行
         */
        ///<summary>
        /// 版本键
        /// </summary>
        public const String VersionKey =
            nameof(CityListCacheConstants) + "." + nameof(Version);

        ///<summary>
        /// 版本号
        /// </summary>
        public const int Version = 1;
    }
}
